package com.ybkj.o2o.mc.manager;


import com.ybkj.o2o.mc.common.DataGrid;
import com.ybkj.o2o.mc.common.query.AccountQuery;
import com.ybkj.o2o.mc.entity.PassengerAccount;

import java.util.List;

public interface PassengerAccountManager {
  /**
   * 分页查询乘客账户信息.
   *
   * @param passengerId 为空则查询所有账户信息
   * @param page        页码
   * @param rows        每页显示数量
   */
  DataGrid<PassengerAccount> findPassengerAccount(Long passengerId, Integer page, Integer rows);

  /**
   * 根据主键查询和乘客查询账户信息.
   *
   * @param accountId   账户明细主键
   * @param passengerId 乘客主键
   * @return 账户明细
   */
  PassengerAccount fetch(Long accountId, Long passengerId);

  /**
   * 根据账户主键修改账户记录.
   *
   * @param passengerAccount 账户明细
   * @return 受影响的数量
   */
  int update(PassengerAccount passengerAccount);

  /**
   * 根据条件分页查询乘客账户记录.
   *
   * @param accountQuery 查询条件
   * @return 账户明细分页记录
   */
  DataGrid<PassengerAccount> findAccountDetail(AccountQuery accountQuery);

  /**
   * 根据OrderId,支付类型查询账户记录.
   *
   * @param orderId 订单主键
   * @param payType 支付类型
   * @param appKey  系统key
   * @return 账户明细列表
   */
  List<PassengerAccount> findAccountByOrderId(Long orderId, String payType, String appKey);

  /**
   * 条件查询账户操作金额总和.
   *
   * @param accountQuery 查询条件
   * @return 账户记录总和
   */
  double sumAccount(AccountQuery accountQuery);


}
